Import("utils_查看详情.js")

function isInMainPage_WK() {
    var allres = ocrAllRes()
    if (ocrTextMoreByRes(allres, '日常福利', '金币收益', '每日挑战', '去提现', '吃饭补贴', '福利商城')
        || ocrTextMoreByRes(allres, '天天抽奖', '昨日收益')
    ) {
        log('在主页面了!')
        return true
    }

    return false
}

function clickCloseButtonWK(closeButton) {
    if (!closeButton) {
        return
    }
    agentOrHidClick(closeButton, 0)
    agentClickRight(closeButton)

    var detects = opencv.findImagesEx('图色819156.cv');
    if (detects != null) {
        // printinfoOld(detects);
        agentOrHidClick(detects[0], 0)
        sleep.millisecond(10)
        agentClickRight(detects[0], 2)
    }

}


function isInGGView_wk() {
    log('判断是否在广告页面')
    var allres = ocrAllRes()

    if (ocrTextMoreCompleteByRes(allres, '广告', '广告1)', '广告|)')) {
        log('在广告页广告广告1)')
        sleep.second(1)
        return true
    }

    if (ocrTextMoreCompleteByRes(allres, '反馈', '跳过', '关闭', '广告')) {
        log('在广告页反馈/跳过/关闭/广告')
        sleep.second(1)
        return true
    }

    if (ocrTextMoreByRes(allres, '继续观看', '直播间', '点击进入', '下滑', '记入奖励', '奖励时长', '看直播开宝箱')) {
        log('在广告页继续观看/直播间/点击进入')
        sleep.second(1)
        return true
    }

    log('不在广告页面!!!')
    return false
}

function watchGG_悟空独享(uiObj, skipClick, maxTimes) {
    if (!uiObj) {
        log('无点击控件直接返回')
        return
    }
    if (maxTimes == undefined) {
        maxTimes = 12;
    }

    if (!skipClick) {
        agentOrHidClick(uiObj, 3)
    }

    log('判断是否在广告页面')
    if (ocrText('数据加载')) {
        sleep.second(5)
        if (ocrText('数据加载')) {
            sleep.second(5)
            if (ocrText('数据加载')) {
                sleep.second(5)
            }
        }
    }
    var isInGG = false
    whilestep((a, b, canbreak) => {
        var allres = ocrAllRes()
        if (ocrTextMoreCompleteByRes(allres, '广告', '反馈', '跳过', '立即下载')
            || ocrTextMoreByRes(allres, '跳过', '反馈', '点击进入')) {
            log('在广告页面了')
            isInGG = true
            canbreak()
        }
    }, 10, 2)

    if (!isInGG) {
        log('不在广告页面再次执行点击操作')

        // 判断是否还在主页面
        if (isInMainPage_WK()) {
            log('还在主页面再次点击原来的')
            agentOrHidClick(uiObj, 3)
            var is任然存在 = ocrText('看视频再', '看广告再', '看视频最高', '看广告最高', '看广告领', '看视频领', '看视频翻')
            if (is任然存在 == null) {
                is任然存在 = ocrText('翻倍领取', '看广告翻', '倍领取')
            }
            if (is任然存在) {
                agentOrHidClickOffectY(is任然存在, 10, 2)
            }
        } else {
            log('再次判断是否在广告页')
            if (!isInGGView_wk()) {
                log('注意注意不在广告不在主页面')
                sleep.second(5)
            }
        }
    }


    // 是否是中断任务
    var allres = ocrAllRes()
    if (ocrTextMoreByRes(allres, '继续', '续观看') && ocrTextMoreByRes(allres, '换一个', '直接退出', '坚持退出')) {
        // 继续观看
        log('继续观看')
        agentOrHidClick(ocrText('继续', '续观看'))
    }

    // 判断广告类型
    // 获取广告时长
    log('获取广告时长')
    var findtime = ocrWaitForMoreTextMillisecondInRegion(0, 0, 1, 0.16, 6, '秒', 's后', 's', '后')
    if (findtime) {
        var convertTime = getNumber(findtime.text())
        log('广告时长' + convertTime)
        sleep.second(1)
        if (convertTime > 60) {
            convertTime = 30
        }
        if (convertTime < 5) {
            convertTime = 15
        }

        var rgbs
        var is古籍广告 = false
        var isZbGG = false
        var isGameorDown = false
        if (convertTime > 0) {
            log('循环检查')
            whilestep((stepTimes, alltimes, canBreak) => {
                rgbs = get界面采样点()
                var allres = ocrAllRes()
                log('剩余执行时间: ' + (convertTime - alltimes))

                if (ocrTextMoreByRes(allres, '直播间', '点击进入', '直播中', '进入直播')) {
                    isZbGG = true
                    // 直播间广告
                    log('直播间广告')
                    agentClickRightOffectRight(ocrTextMoreByRes(allres, '取消'), 10, 1, () => {
                        if (ocrWaitForMoreTextMillisecond('更多直播', '说点什么', '人气', '小时榜', 4)) {
                            agentOrHidback()
                            sleep.second(2)

                            // 返回后如果不在广告页面也不在主页面就再次返回
                            if (!isInGGView_wk() && !isInMainPage_WK()) {
                                agentOrHidback()
                                sleep.second(1)
                            }
                        }


                        // 如果不小心返回过了
                        allres = ocrAllRes()
                        if (ocrTextMoreByRes(allres, '继续', '续观看') && ocrTextMoreByRes(allres, '换一个', '直接退出', '坚持退出')) {
                            // 继续观看
                            log('继续观看')
                            agentOrHidClick(ocrText('继续', '续观看'))
                        }
                    })
                }
                // 判断是否是斗地主之类的
                if (ocrTextMoreByRes(allres, '斗地主', '当皇上', '种树', '快乐学习', '古籍', '芒果', '公益')
                    || ocrTextMoreByRes(allres, '微信', '转微', '小游戏', '种菜')) {
                    is古籍广告 = true
                    log('斗地主广告')
                    addExcuteFuncTimes('wk_斗地主_times')
                    canBreak()
                }

                if (ocrTextMoreByRes(allres, '手游', '侠', '仙', '下载', '游戏', '梦幻', '三国', '射击')) {
                    log('游戏类广告')
                    isGameorDown = true
                }

                // 判断是否广告已经结束
                if (convertTime > 29 && alltimes > 30) {
                    if (ocrTextMoreByRes(allres, '已领取', '再看一', '关闭', '开心收下', '领取成功', '领取奖励')) {
                        canBreak()
                    }
                }

            }, 10, 5, (canBreak) => {
                if (check界面是否不再变化(rgbs)) {
                    if (ocrText('领取成功')) {
                        log('界面不再变化!!!')
                        canBreak()
                    }
                }
            })


            log('循环检查结束')
        }

        if (is古籍广告) {
            sleep.second(convertTime - 10)
            log('古籍广告')
            // 如果前两次是斗地主, 强制退出
            if (getExcuteFuncTimes('wk_斗地主_times') <= 2) {
                log('前两次是斗地主强制退出')
                agentOrHidback()
                sleep.second(1)
                agentOrHidClick(ocrWaitForMoreTextMillisecond('不使用', '直接退出', '坚持退出', '坚决退出', '退出', '放弃'))
                return
            } else {
                setExcuteFunc('wk_古籍广告')
            }
        } else {
            addExcuteFuncTimes('wk_斗地主_times', 0)
        }


        if (isGameorDown && !isZbGG) {
            log('游戏广或者下载广等待完播')
            ocrWaitForText('领取成功', 20, 2)
        }

        if (isZbGG) {
            log('是否还进入直播间')
        }
    }

    // 是否去查看详情
    var allres = ocrAllRes()
    if (!is古籍广告 && !hasExcuteFunc('skip_看视频_wk')) {
        // 是否去查看详情
        var isGoDetail = Math.random() * 100 > 20
        if (isGoDetail) {
            // 直播间广告和其他广告
            // 游戏广和海外购直播/团购直播
            if (isZbGG) {
                // if (ocrTextMoreByRes(allres, '游戏', '下单', '优惠', '团购', '旗舰') || getExcuteFuncTimes('open_开宝箱_wk_low') >= 1) {

                // }
                log('游戏或团购直播')
                addExcuteFuncTimes('wk_海外_times')
                agentOrHidClick(ocrTextMoreByRes(allres, '点击进入', '直播间', '去直播', '进入'), 2)

                if (getExcuteFuncTimes('wk_海外_times') % 15 == 0) {
                    go看直播挂机()
                } else {
                    go看直播浏览小手柄(convertTime > 15 ? convertTime - 15 : 10)
                }
                // 低金币次数3次以上会看直播, 每隔5个海外购进入看直播

                if (isIn直播界面_sample()) {
                    // 关闭直播
                    log('关闭直播')
                    var detects关闭直播 = opencv.findImagesEx('图色199710.cv');
                    if (detects关闭直播 != null) {
                        agentOrHidClick(detects关闭直播[0])
                    }

                    agentOrHidClick(ocrWaitForText('领取成功', '已成功领取奖励', '关闭', '奖励已领取', '闭', '跳过'))
                    agentOrHidClick(ocrText('不使用', '坚决退出', '退出'))

                    if (isIn直播界面_sample()) {
                        log('还在直播界面??')
                        agentOrHidback()
                        sleep.second(2)

                        // 如果不小心直接到广告主界面
                        var allres = ocrAllRes()
                        if (ocrTextMoreByRes(allres, '继续', '续观看') && ocrTextMoreByRes(allres, '换一个', '坚持退出')) {
                            // 继续观看
                            log('继续观看')
                            agentOrHidClick(ocrText('继续', '续观看'))
                            closeButton = ocrWaitForText('领取成功', 20, 2)
                            clickCloseButtonWK(closeButton)
                        } else {
                            agentOrHidClick(ocrTextMoreByRes(allres, '退出', '坚持', '坚决', '不使用'))
                        }
                    }
                }
            } else {
                viewDetail()
            }

        }
    }

    // // 等待广告结束或者等待视频的完播
    // var wbmaxTimes = 20

    // if (getRandomNum(0, 100) > 70) {
    //     log('随机等待视频的完播')
    //     var rgbs = get界面采样点()
    //     sleep.second(1)
    //     while (true) {
    //         if (check界面是否不再变化(rgbs) || ocrText('直播')) {
    //             log('完播界面不再变化!!!')
    //             break
    //         }

    //         wbmaxTimes = wbmaxTimes - 1
    //         if (wbmaxTimes < 0) {
    //             break
    //         }
    //         sleep.second(2)
    //         rgbs = get界面采样点()
    //     }
    //     // 进行完播
    // }


    log('等待直到领取成功')
    var closeButton = ocrWaitForText('领取成功', 15, 2)

    // 关闭广告
    if (closeButton && ocrWaitForMoreTextMillisecond('领取成功', 4, 500)) {
        log('点击关闭广告')
        sleep.second(1)
        // agentOrHidClick(closeButton)

        // agentClickRight(closeButton)
        clickCloseButtonWK(closeButton)
        if (!ocrText('再看一个', '继续领取', '退出') && !isInMainPage_WK()) {
            if (isInGGView_wk()) {
                log('没有成功关闭广告!')
                sleep.second(3)
                agentClickRight(ocrTextMoreInRegion(0, 0, 1, 0.2, '领取成功', '已成功领取奖励', '关闭'))
                sleep.second(3)
                if (isInGGView_wk()) {
                    agentOrHidback()
                    sleep.second(2)
                }
            }
        }
    } else {
        log('没有关闭按钮')
        sleep.second(2)
        if (isInMainPage_WK()) {
            log('已经再主页面了')
            sleep.second(1)
            return
        }

        if (isInGGView_wk()) {
            log('还在广告页准备返回')
            sleep.second(1)
            agentOrHidback()
            sleep.second(2)
            var allres = ocrAllRes()
            if (ocrTextMoreByRes(allres, '继续', '续观看') && ocrTextMoreByRes(allres, '换一个', '坚持退出', '直接退出')) {
                // 继续观看
                log('继续观看')
                agentOrHidClick(ocrText('继续', '续观看'))
                closeButton = ocrWaitForText('领取成功', 20, 2)
                clickCloseButtonWK(closeButton)
            } else {
                // 存在广告页的二次弹窗
                if (isInGGView_wk()) {
                    log('异常2')
                    agentOrHidback()
                    sleep.second(2)
                } else {
                    if (isInMainPage_WK()) {
                        return
                    }
                    agentOrHidback()
                    sleep.second(2)
                    closeButton = ocrWaitForText('领取成功', 10, 2)
                    clickCloseButtonWK(closeButton)
                }
            }

        } else {
            log('自动在详情页面?')
            // if (ocrText('立即下载', '开发者', '应用权限')) {
            //     agentOrHidback()
            //     sleep.second(2)
            // }
            agentOrHidback()
            log('已返回按钮')
            sleep.second(1)
            // sleep.second(2)
            log('等待按钮领取成功')
            closeButton = ocrWaitForText('领取成功', 10, 2)
            if (closeButton == null) {
                if (isInMainPage_WK()) {
                    return
                }
                agentOrHidback()
                closeButton = ocrWaitForText('领取成功', 3, 2)
            }
            clickCloseButtonWK(closeButton)
        }
    }

    // 判断是任务中心还是再来一次
    var allres = ocrAllRes()

    // 如果是任务中心结束迭代
    if (ocrTextMoreByRes(allres, '日常任务', '金币收益', '赚钱任务', '去提现', '限时任务', '新人看视频')) {
        log('在主页面了2')
        sleep.second(1)
        return
    }

    if (maxTimes < 0) {
        log('达到看广告极限次数')
        if (!isInGGView_wk()) {
            log('在广告详情页准备返回')
            agentOrHidback()
            sleep.second(2)

            closeButton = ocrWaitForText('领取成功', 10, 2)
            if (closeButton == null) {
                clickCloseButtonWK(closeButton)
            } else {
                agentOrHidback()
                sleep.second(2)
            }
        }
        agentOrHidClick(ocrTextMoreByRes(allres, '退出', '残忍离开', '先不看', '坚持', '放弃', '强制'))
        return
    }

    log('去判断再来一次')
    var moreFlagAgain = ocrTextMoreByRes(allres, '再看一', '继续领取')
    if (moreFlagAgain) {
        // 判断金币是否达标
        // ocrTextTrue('5')
        var jbNum = getNumByNearBy(moreFlagAgain, 210, 140)
        if (jbNum == 0) {
            var flag = ocrText('70', '77', '30', '60', '最高', '金币')
            var jinstr = ocrGetAllStrInNearDect(flag, 150, 20)

            jbNum = getMaxNumByStr(jinstr)
        }
        if (jbNum == 0) {
            var ocr1 = opencv.OCREx('图色751603.cv');
            if (ocr1 != null) {
                jbNum = getMaxNumByStr(ocr1.getAllString())
            }
        }
        log(`获取金币: ${jbNum}`)
        if (jbNum > 0 && jbNum < 2000) {
            log('金币不达标退出')
            addExcuteFuncTimes('open_开宝箱_wk_low')
            if (getExcuteFuncTimes('open_开宝箱_wk_low') > 2) {
                addExcuteFuncTimes('again_low_wk')

                addExcuteFuncTimes('open_开宝箱_wk_low', 0)
            }
            agentOrHidClick(ocrTextMoreByRes(allres, '直接退出', '坚持退', '持退出'))
            return
        } else {
            if (jbNum == 3300 || jbNum == 2200 || jbNum == 7000 || jbNum == 7700) {
                addExcuteFuncTimes('again_low_wk', 0)
            }

            addExcuteFuncTimes('open_开宝箱_FQwk_金币太低', 0)
        }

        log('再看一次')
        // 如果是再来一次
        watchGG_悟空独享(ocrTextMoreByRes(allres, '取奖励', '领取奖', '再看一', '继续领取'), false, maxTimes - 1)
    }

    log('最后检测一次是否还在广告内')
    if (isInGGView_wk()) {
        log('还在广告内强制退出')
        agentOrHidback()
        sleep.second(2)
        agentOrHidClick(ocrText('退出', '残忍离开', '先不看', '坚持', '放弃', '强制'))
    }

    log('结束广告')
}